home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 38
/
Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso
/
-in_the_mag-
/
reader_requests
/
dice_v3.15
/
doc
/
libmake.doc
< prev
next >
Wrap
Text File
|
1999-01-26
|
4KB
|
137 lines
libmake/libmake libmake/libmake
LIBMAKE.DOC
GENERATING LARGE LINK LIBRARIES
Libmake is a utility that will scan a file listings sources files for
a library, determine what is out of date, compile the out of date
modules (compile .c modules, assemble .a modules), and JOIN the whole
thing together in the end to create a library. Libmake is useful
for creating large libraries that would otherwise overflow the command
line length limit in DMakefile.
Libmake takes several arguments, some optional:
libmake <file> -n -o objdir -l lib -clean -pr -mRR -mC -mD -proto -Ddef
<file>
specify the control file that contains a list of source modules,
see below.
-v
verbose operation
-n
dry run (do not actually compile/assemble/join anything)
-Dmacro[=def]
specify DCPP macro, i.e. #define equivalent to be passed to all
compiles.
-o object_dir
specify object directory prefix, if a directory must end in
'/' or ':', allowing both file prefixes and directory paths.
-l library
specify library output file, usually something.lib
-clean
instead of compiling/assembling/join'ing the library, delete
ALL object modules from object_dir relating to the library.
-pr
pass -pr option to DCC
-proto
pass -proto option to DCC
-mr
-mR
-mRR
specify reg-call opts to DCC (normally only -mRR is useful when
generating fully registered libraries)
-mD
pass -mD to DCC, causes DCC to use the large-data
model. Default is to use the small-data model
-mC
pass -mC to DCC, causes DCC to use the large-code
model. Default is to use the small-data model
-prof
pass -prof to DCC, causes profiling code to be generated for
all the routines in the library.
CONTROL FILE
The control file is named files.<something> by convention, for
example, 'files.c3lib', which happens to be the control file used
generate C*.LIB.
A control file may contain blank lines, lines that begin with a
semi-colon (comments), and lines containing a file name optionally
preceeded by a '*'. Here is an example:
------------------ example file -----------------
; Full C library
assert/assert.c
assert/abort.c
amiga/exit.c
amiga/main.c
amiga/wbmain.c
*amiga/c.a
*amiga/c_pi.a
*amiga/c_pr.a
*amiga/x.a
amiga/config.a
------------------ example file -----------------
Lines beginning with a '*' tell LIBMAKE to compile/assemble the file
but NOT to include the object module in the generated output library.
Thus, in the above example amiga/c.a would be assembled but not made
part of the DLIB:C.LIB
Also note that the path specified for a given file is appended to
the -o (object directory) specification. Thus, if you were to use
the following libmake line:
1> libmake files.c3lib -o dtmp:xx/ -l dlib:xx.lib -pr -proto
Then object modules would be created as follows:
DTMP:XX/assert/assert.o
DTMP:XX/assert/abort.o
DTMP:XX/amiga/exit.o
etc..
You probably want to pre-create the directory structure required.
Please refer to the library source archive for examples (no less than
DMakefile's calling libmake to regenerate every single DICE library
that exists!)
NAMING CONVENSIONS IN THE CONTROL FILE
.a assemble with DAS
.a68 assemble with A68K
.o insert specified object into destination library (raw copy)
.lib insert specified library into destination library (raw copy)
<other> any other suffix is assumed to be a C source file to compile
with DCC